{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 运行版本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'3.8.13 (default, Mar 28 2022, 06:59:08) [MSC v.1916 64 bit (AMD64)]'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import sys\n",
    "\n",
    "sys.version"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2.6.0'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import tensorflow\n",
    "\n",
    "tensorflow.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.10.1'"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "torch.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# !python -m deepxde.backend.set_default_backend tensorflow.compat.v1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using backend: tensorflow.compat.v1\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\tensorflow\\python\\compat\\v2_compat.py:101: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "non-resource variables are not supported in the long term\n",
      "WARNING:tensorflow:From G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\deepxde\\nn\\initializers.py:118: The name tf.keras.initializers.he_normal is deprecated. Please use tf.compat.v1.keras.initializers.he_normal instead.\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'1.1.3'"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import deepxde\n",
    "\n",
    "deepxde.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "代码来源： https://deepxde.readthedocs.io/en/latest/demos/pinn_forward/poisson.1d.dirichletperiodic.html"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Poisson方程\n",
    "\n",
    "## 2.1 基本定义\n",
    "\n",
    "记 $\\large x=(x_1,\\cdots,x_n) \\in \\mathbb{R}^n, u=u(x), 拉普拉斯算子 \\Delta u = \\sum^n_{i=1} u_{x_i x_i} $，Laplace方程又称为“**位势方程**”, 最有用的PDE之一无疑。包括Laplace方程\n",
    "$$\n",
    "\\large \\Delta u = 0 \\tag{2.1}\n",
    "$$\n",
    "以及Poisson方程\n",
    "$$\n",
    "\\large - \\Delta u = f.  \\tag{2.2}\n",
    "$$\n",
    "在上面两个方程中，$x \\in U$ 且未知量为 $\\large u:\\bar{U} \\to \\mathbb{R}, u = u(x)$，这里 $u \\subset \\mathbb{R}^n$ 是开集. 而在第二个方程中 $f:U \\to \\mathbb{R}$ 也是给定的。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "## 2.2 问题设置\n",
    "- 具有狄利克雷/周期边界条件的一维泊松方程\n",
    "\n",
    "我们将求解一个泊松方程：$$\\large −Δu=π^2sin(πx),x∈[−1,1], \\tag{2.3}$$\n",
    "\n",
    "在右边界上具有周期性边界条件: $$u(0)=u(1).$$\n",
    "\n",
    "和左边界上的狄利克雷边界条件: $$u(−1)=0.$$ \n",
    "\n",
    "确切的解决方案是 $$\\large u(x)=sin(πx).$$ \n",
    "\n",
    "mathematica求解代码\n",
    "```mathematica\n",
    "DSolve[{-D[u[x], {x, 2}] == Pi^2 Sin[Pi x], u[0] == u[1], u[-1] == 0}, u[x], {x}]\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using backend: tensorflow.compat.v1\n",
      "\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\tensorflow\\python\\compat\\v2_compat.py:101: disable_resource_variables (from tensorflow.python.ops.variable_scope) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "non-resource variables are not supported in the long term\n",
      "WARNING:tensorflow:From G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\deepxde\\nn\\initializers.py:118: The name tf.keras.initializers.he_normal is deprecated. Please use tf.compat.v1.keras.initializers.he_normal instead.\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 首先，导入 DeepXDE 和 TensorFlow ( `tf`) 模块：\n",
    "\n",
    "import deepxde as dde\n",
    "import numpy as np\n",
    "from deepxde.backend import tf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义泊松方程：$\\large −Δu=π^2sin(πx),x∈[−1,1]$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 几何区域\n",
    "geom = dde.geometry.Interval(-1, 1)\n",
    "\n",
    "\n",
    "# 偏微分方程\n",
    "def pde(x, y):\n",
    "    \"\"\"\n",
    "    x: network input,  x-coordinate\n",
    "    y: network output, the solution u(x),but here we use y as the name of the variable.\n",
    "    return: −Δ𝑢 -π^2 𝑠𝑖𝑛(π𝑥)\n",
    "    \"\"\"\n",
    "    dy_xx = dde.grad.hessian(y, x)\n",
    "    return -dy_xx - np.pi ** 2 * tf.sin(np.pi * x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义边界条件\n",
    "\n",
    "在右边界上具有周期性边界条件: $u(0)=u(1).$\n",
    "\n",
    "和左边界上的狄利克雷边界条件: $u(−1)=0.$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def boundary_r(x, on_boundary):\n",
    "    return on_boundary and np.isclose(x[0], 1)\n",
    "\n",
    "def boundary_l(x, on_boundary):\n",
    "    return on_boundary and np.isclose(x[0], -1)\n",
    "\n",
    "# define a function to return the value of u(x) for the points x on the Dirichlet boundary.\n",
    "def func(x):\n",
    "    return np.sin(np.pi * x)\n",
    "\n",
    "\n",
    "# 狄利克雷边界条件\n",
    "bc1 = dde.DirichletBC(geom, func, boundary_l) \n",
    "# 周期性边界条件\n",
    "bc2 = dde.PeriodicBC(geom, 0, boundary_r) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\skopt\\sampler\\sobol.py:246: UserWarning: The balance properties of Sobol' points require n to be a power of 2. 0 points have been previously generated, then: n=0+18=18. \n",
      "  warnings.warn(\"The balance properties of Sobol' points require \"\n"
     ]
    }
   ],
   "source": [
    "data = dde.data.PDE(geom, pde, [bc1, bc2], 16, 2, solution=func, num_test=100)\n",
    "\n",
    "# 数字 16 是在域内采样的训练残差点数，数字 2 是在边界上采样的训练点数。\n",
    "# 参数`solution=func`是计算我们解决方案误差的参考解决方案，如果我们没有参考解决方案，可以忽略。\n",
    "# 我们使用 100 个残差点来测试 PDE 残差。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "net"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 深度为 4（即 3 个隐藏层）和宽度为 50 的全连接神经网络\n",
    "layer_size = [1] + [50] * 3 + [1]\n",
    "activation = \"tanh\"\n",
    "initializer = \"Glorot uniform\"\n",
    "net = dde.nn.FNN(layer_size, activation, initializer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "model\n",
    "\n",
    "构建一个`Model`并选择优化器和学习率,L2相对误差作为训练期间的指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Compiling model...\n",
      "Building feed-forward neural network...\n",
      "'build' took 0.070400 s\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\keras\\legacy_tf_layers\\core.py:236: UserWarning: `tf.layers.dense` is deprecated and will be removed in a future version. Please use `tf.keras.layers.Dense` instead.\n",
      "  warnings.warn('`tf.layers.dense` is deprecated and '\n",
      "G:\\Anaconda3\\envs\\py3.8\\lib\\site-packages\\keras\\engine\\base_layer_v1.py:1676: UserWarning: `layer.apply` is deprecated and will be removed in a future version. Please use `layer.__call__` method instead.\n",
      "  warnings.warn('`layer.apply` is deprecated and '\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "'compile' took 3.733325 s\n",
      "\n"
     ]
    }
   ],
   "source": [
    "model = dde.Model(data, net)\n",
    "model.compile(\"adam\", lr=2e-5, metrics=[\"l2 relative error\"])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "model.train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initializing variables...\n",
      "Training model...\n",
      "\n",
      "Step      Train loss                        Test loss                         Test metric   \n",
      "0         [4.70e+01, 3.07e-02, 1.23e-01]    [4.95e+01, 3.07e-02, 1.23e-01]    [1.12e+00]    \n",
      "1000      [2.38e+01, 7.10e-04, 4.92e-01]    [2.53e+01, 7.10e-04, 4.92e-01]    [7.44e-01]    \n",
      "2000      [5.55e+00, 1.68e-03, 2.44e-01]    [5.62e+00, 1.68e-03, 2.44e-01]    [3.69e-01]    \n",
      "3000      [1.37e+00, 2.62e-04, 1.05e-02]    [1.06e+00, 2.62e-04, 1.05e-02]    [7.13e-02]    \n",
      "4000      [6.18e-01, 1.36e-05, 3.19e-03]    [3.47e-01, 1.36e-05, 3.19e-03]    [7.91e-02]    \n",
      "5000      [3.45e-01, 2.77e-05, 7.27e-04]    [1.80e-01, 2.77e-05, 7.27e-04]    [3.95e-02]    \n",
      "6000      [1.38e-01, 5.79e-06, 2.14e-04]    [6.17e-02, 5.79e-06, 2.14e-04]    [1.23e-02]    \n",
      "7000      [6.79e-02, 2.61e-07, 4.54e-05]    [4.75e-02, 2.61e-07, 4.54e-05]    [1.55e-02]    \n",
      "8000      [3.04e-02, 6.21e-07, 2.05e-05]    [2.23e-02, 6.21e-07, 2.05e-05]    [1.03e-02]    \n",
      "9000      [9.52e-03, 5.17e-07, 6.46e-06]    [6.56e-03, 5.17e-07, 6.46e-06]    [2.36e-03]    \n",
      "10000     [3.71e-03, 7.16e-09, 1.08e-06]    [3.35e-03, 7.16e-09, 1.08e-06]    [1.75e-03]    \n",
      "11000     [1.44e-03, 2.77e-09, 3.33e-07]    [1.55e-03, 2.77e-09, 3.33e-07]    [1.14e-03]    \n",
      "12000     [7.23e-04, 1.04e-09, 7.26e-08]    [1.07e-03, 1.04e-09, 7.26e-08]    [2.62e-03]    \n",
      "13000     [4.49e-04, 4.40e-10, 2.15e-08]    [7.87e-04, 4.40e-10, 2.15e-08]    [2.54e-03]    \n",
      "14000     [2.35e-04, 1.03e-10, 2.15e-08]    [4.76e-04, 1.03e-10, 2.15e-08]    [1.71e-03]    \n",
      "15000     [1.04e-04, 2.63e-09, 6.02e-10]    [2.60e-04, 2.63e-09, 6.02e-10]    [7.19e-04]    \n",
      "16000     [4.85e-05, 1.37e-13, 1.07e-09]    [1.65e-04, 1.37e-13, 1.07e-09]    [2.65e-04]    \n",
      "17000     [3.07e-05, 2.59e-08, 1.12e-07]    [1.38e-04, 2.59e-08, 1.12e-07]    [7.88e-04]    \n",
      "18000     [2.22e-05, 3.06e-11, 2.10e-10]    [1.16e-04, 3.06e-11, 2.10e-10]    [8.60e-04]    \n",
      "19000     [1.60e-05, 8.35e-10, 4.18e-09]    [9.99e-05, 8.35e-10, 4.18e-09]    [8.09e-04]    \n",
      "20000     [1.17e-05, 1.30e-11, 2.17e-10]    [8.55e-05, 1.30e-11, 2.17e-10]    [7.26e-04]    \n",
      "21000     [8.75e-06, 2.38e-08, 9.08e-08]    [7.63e-05, 2.38e-08, 9.08e-08]    [6.98e-04]    \n",
      "22000     [6.51e-06, 4.32e-09, 2.17e-08]    [6.36e-05, 4.32e-09, 2.17e-08]    [5.71e-04]    \n",
      "23000     [4.81e-06, 1.12e-12, 4.09e-11]    [5.78e-05, 1.12e-12, 4.09e-11]    [4.93e-04]    \n",
      "24000     [3.86e-06, 2.52e-08, 1.09e-07]    [5.47e-05, 2.52e-08, 1.09e-07]    [4.76e-04]    \n",
      "25000     [2.91e-06, 4.52e-09, 1.65e-08]    [4.67e-05, 4.52e-09, 1.65e-08]    [3.60e-04]    \n",
      "26000     [2.36e-06, 6.54e-09, 2.75e-08]    [4.27e-05, 6.54e-09, 2.75e-08]    [3.13e-04]    \n",
      "27000     [2.51e-06, 8.58e-08, 3.75e-07]    [4.57e-05, 8.58e-08, 3.75e-07]    [4.32e-04]    \n",
      "28000     [2.00e-06, 6.40e-08, 2.69e-07]    [4.23e-05, 6.40e-08, 2.69e-07]    [3.85e-04]    \n",
      "29000     [1.41e-06, 1.60e-10, 4.30e-10]    [3.66e-05, 1.60e-10, 4.30e-10]    [2.14e-04]    \n",
      "30000     [1.26e-06, 5.02e-12, 3.10e-11]    [3.51e-05, 5.02e-12, 3.10e-11]    [1.81e-04]    \n",
      "31000     [1.78e-06, 8.42e-08, 3.66e-07]    [3.86e-05, 8.42e-08, 3.66e-07]    [3.62e-04]    \n",
      "32000     [1.08e-06, 2.14e-11, 6.26e-11]    [3.30e-05, 2.14e-11, 6.26e-11]    [1.44e-04]    \n",
      "33000     [1.44e-06, 3.39e-08, 1.67e-07]    [2.94e-05, 3.39e-08, 1.67e-07]    [1.85e-04]    \n",
      "34000     [9.80e-07, 8.26e-12, 2.72e-11]    [3.14e-05, 8.26e-12, 2.72e-11]    [1.16e-04]    \n",
      "35000     [1.01e-06, 9.65e-09, 4.02e-08]    [3.21e-05, 9.65e-09, 4.02e-08]    [1.73e-04]    \n",
      "36000     [9.32e-07, 8.10e-10, 3.50e-09]    [2.99e-05, 8.10e-10, 3.50e-09]    [8.60e-05]    \n",
      "37000     [9.09e-07, 6.07e-12, 3.20e-12]    [2.99e-05, 6.07e-12, 3.20e-12]    [8.97e-05]    \n",
      "38000     [8.94e-07, 1.01e-10, 3.38e-10]    [2.97e-05, 1.01e-10, 3.38e-10]    [8.80e-05]    \n",
      "39000     [8.81e-07, 1.49e-10, 7.42e-10]    [2.91e-05, 1.49e-10, 7.42e-10]    [6.99e-05]    \n",
      "40000     [1.04e-06, 5.59e-09, 2.85e-08]    [2.75e-05, 5.59e-09, 2.85e-08]    [6.98e-05]    \n",
      "41000     [9.43e-07, 8.06e-09, 3.59e-08]    [3.02e-05, 8.06e-09, 3.59e-08]    [1.36e-04]    \n",
      "42000     [1.07e-06, 2.73e-08, 1.23e-07]    [3.10e-05, 2.73e-08, 1.23e-07]    [2.10e-04]    \n",
      "43000     [1.03e-06, 2.85e-08, 1.20e-07]    [3.07e-05, 2.85e-08, 1.20e-07]    [2.14e-04]    \n",
      "44000     [8.65e-07, 5.70e-10, 3.07e-09]    [2.89e-05, 5.70e-10, 3.07e-09]    [6.97e-05]    \n",
      "45000     [1.05e-06, 3.43e-08, 1.47e-07]    [2.59e-05, 3.43e-08, 1.47e-07]    [1.42e-04]    \n",
      "46000     [1.06e-06, 3.52e-08, 1.49e-07]    [3.06e-05, 3.52e-08, 1.49e-07]    [2.28e-04]    \n",
      "47000     [1.84e-06, 1.49e-07, 6.40e-07]    [2.37e-05, 1.49e-07, 6.40e-07]    [3.31e-04]    \n",
      "48000     [1.15e-06, 5.39e-08, 2.24e-07]    [3.09e-05, 5.39e-08, 2.24e-07]    [2.71e-04]    \n",
      "49000     [8.51e-07, 5.76e-09, 2.61e-08]    [2.87e-05, 5.76e-09, 2.61e-08]    [1.19e-04]    \n",
      "50000     [7.92e-07, 1.11e-10, 3.37e-10]    [2.76e-05, 1.11e-10, 3.37e-10]    [5.89e-05]    \n",
      "51000     [7.97e-07, 1.53e-09, 6.24e-09]    [2.80e-05, 1.53e-09, 6.24e-09]    [8.22e-05]    \n",
      "52000     [8.05e-07, 4.29e-09, 1.87e-08]    [2.66e-05, 4.29e-09, 1.87e-08]    [3.05e-05]    \n",
      "53000     [7.71e-07, 1.20e-12, 2.03e-11]    [2.72e-05, 1.20e-12, 2.03e-11]    [4.77e-05]    \n",
      "54000     [7.68e-07, 7.84e-11, 1.76e-10]    [2.71e-05, 7.84e-11, 1.76e-10]    [6.06e-05]    \n",
      "55000     [7.58e-07, 1.32e-12, 1.43e-11]    [2.71e-05, 1.32e-12, 1.43e-11]    [4.91e-05]    \n",
      "56000     [7.52e-07, 1.18e-11, 9.53e-11]    [2.70e-05, 1.18e-11, 9.53e-11]    [4.76e-05]    \n",
      "57000     [7.47e-07, 1.03e-10, 4.85e-10]    [2.68e-05, 1.03e-10, 4.85e-10]    [4.40e-05]    \n",
      "58000     [1.79e-06, 1.63e-07, 6.89e-07]    [2.28e-05, 1.63e-07, 6.89e-07]    [3.55e-04]    \n",
      "59000     [7.34e-07, 1.91e-12, 6.47e-13]    [2.68e-05, 1.91e-12, 6.47e-13]    [5.49e-05]    \n",
      "60000     [7.33e-07, 5.22e-10, 1.87e-09]    [2.69e-05, 5.22e-10, 1.87e-09]    [7.68e-05]    \n",
      "61000     [7.40e-07, 9.31e-11, 9.82e-10]    [2.63e-05, 9.31e-11, 9.82e-10]    [5.30e-05]    \n",
      "62000     [7.17e-07, 3.10e-12, 1.92e-12]    [2.66e-05, 3.10e-12, 1.92e-12]    [6.03e-05]    \n",
      "63000     [7.12e-07, 3.06e-11, 6.47e-11]    [2.66e-05, 3.06e-11, 6.47e-11]    [6.38e-05]    \n",
      "64000     [7.08e-07, 3.73e-10, 1.41e-09]    [2.66e-05, 3.73e-10, 1.41e-09]    [7.88e-05]    \n",
      "65000     [7.00e-07, 7.76e-13, 6.27e-12]    [2.64e-05, 7.76e-13, 6.27e-12]    [6.43e-05]    \n",
      "66000     [6.95e-07, 1.75e-11, 3.45e-11]    [2.64e-05, 1.75e-11, 3.45e-11]    [6.85e-05]    \n",
      "67000     [6.90e-07, 1.68e-11, 9.09e-11]    [2.63e-05, 1.68e-11, 9.09e-11]    [6.61e-05]    \n",
      "68000     [6.91e-07, 9.46e-10, 3.86e-09]    [2.67e-05, 9.46e-10, 3.86e-09]    [9.02e-05]    \n",
      "69000     [6.79e-07, 3.37e-11, 1.16e-10]    [2.63e-05, 3.37e-11, 1.16e-10]    [7.57e-05]    \n",
      "70000     [6.77e-07, 3.55e-12, 3.90e-12]    [2.60e-05, 3.55e-12, 3.90e-12]    [7.61e-05]    \n",
      "71000     [6.68e-07, 5.69e-11, 1.90e-10]    [2.62e-05, 5.69e-11, 1.90e-10]    [8.10e-05]    \n",
      "72000     [6.63e-07, 6.11e-12, 1.98e-11]    [2.61e-05, 6.11e-12, 1.98e-11]    [7.99e-05]    \n",
      "73000     [1.31e-06, 2.77e-08, 1.43e-07]    [2.98e-05, 2.77e-08, 1.43e-07]    [2.06e-04]    \n",
      "74000     [6.70e-07, 2.53e-09, 1.11e-08]    [2.53e-05, 2.53e-09, 1.11e-08]    [7.23e-05]    \n",
      "75000     [6.51e-07, 3.38e-10, 1.65e-09]    [2.56e-05, 3.38e-10, 1.65e-09]    [7.70e-05]    \n",
      "76000     [7.14e-07, 1.01e-08, 4.10e-08]    [2.51e-05, 1.01e-08, 4.10e-08]    [1.05e-04]    \n",
      "77000     [6.62e-07, 3.10e-09, 1.34e-08]    [2.51e-05, 3.10e-09, 1.34e-08]    [8.10e-05]    \n",
      "78000     [6.34e-07, 2.41e-11, 1.31e-10]    [2.58e-05, 2.41e-11, 1.31e-10]    [9.49e-05]    \n",
      "79000     [6.31e-07, 3.75e-10, 1.60e-09]    [2.55e-05, 3.75e-10, 1.60e-09]    [8.69e-05]    \n",
      "80000     [6.33e-07, 1.41e-09, 5.78e-09]    [2.61e-05, 1.41e-09, 5.78e-09]    [1.17e-04]    \n",
      "\n",
      "Best model at step 79000:\n",
      "  train loss: 6.33e-07\n",
      "  test loss: 2.55e-05\n",
      "  test metric: [8.69e-05]\n",
      "\n",
      "'train' took 283.759004 s\n",
      "\n"
     ]
    }
   ],
   "source": [
    "losshistory, train_state = model.train(epochs=80000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "plot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "def plot_loss_history(loss_history):\n",
    "    \"\"\"Plot the training and testing loss history.\n",
    "\n",
    "    Note:\n",
    "        You need to call ``plt.show()`` to show the figure.\n",
    "\n",
    "    Args:\n",
    "        loss_history: ``LossHistory`` instance. The first variable returned from\n",
    "            ``Model.train()``.\n",
    "    \"\"\"\n",
    "    loss_train = np.sum(loss_history.loss_train, axis=1)\n",
    "    loss_test = np.sum(loss_history.loss_test, axis=1)\n",
    "\n",
    "    plt.figure(figsize=(10, 8))\n",
    "    plt.semilogy(loss_history.steps, loss_train, label=\"Train loss\")\n",
    "    plt.semilogy(loss_history.steps, loss_test, label=\"Test loss\")\n",
    "    for i in range(len(loss_history.metrics_test[0])):\n",
    "        plt.semilogy(\n",
    "            loss_history.steps,\n",
    "            np.array(loss_history.metrics_test)[:, i],\n",
    "            label=\"Test metric\",\n",
    "        )\n",
    "    plt.xlabel(\"Steps\")\n",
    "    plt.ylabel(\"loss\")\n",
    "    plt.legend()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_loss_history(losshistory)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "\n",
    "def _pack_data(train_state):\n",
    "    def merge_values(values):\n",
    "        if values is None:\n",
    "            return None\n",
    "        return np.hstack(values) if isinstance(values, (list, tuple)) else values\n",
    "\n",
    "    y_train = merge_values(train_state.y_train)\n",
    "    y_test = merge_values(train_state.y_test)\n",
    "    best_y = merge_values(train_state.best_y)\n",
    "    best_ystd = merge_values(train_state.best_ystd)\n",
    "    return y_train, y_test, best_y, best_ystd\n",
    "\n",
    "def plot_best_state(train_state):\n",
    "    \"\"\"Plot the best result of the smallest training loss.\n",
    "\n",
    "    This function only works for 1D and 2D problems. For other problems and to better\n",
    "    customize the figure, use ``save_best_state()``.\n",
    "\n",
    "    Note:\n",
    "        You need to call ``plt.show()`` to show the figure.\n",
    "\n",
    "    Args:\n",
    "        train_state: ``TrainState`` instance. The second variable returned from\n",
    "            ``Model.train()``.\n",
    "    \"\"\"\n",
    "    if isinstance(train_state.X_train, (list, tuple)):\n",
    "        print(\n",
    "            \"Error: The network has multiple inputs, and plotting such result han't been implemented.\"\n",
    "        )\n",
    "        return\n",
    "\n",
    "    y_train, y_test, best_y, best_ystd = _pack_data(train_state)\n",
    "    y_dim = best_y.shape[1]\n",
    "\n",
    "    # Regression plot\n",
    "    # 1D\n",
    "    if train_state.X_test.shape[1] == 1:\n",
    "        idx = np.argsort(train_state.X_test[:, 0])\n",
    "        X = train_state.X_test[idx, 0]\n",
    "        plt.figure(figsize=(10, 6))\n",
    "        for i in range(y_dim):\n",
    "            if y_train is not None:\n",
    "                plt.plot(train_state.X_train[:, 0], y_train[:, i], \"ok\", label=\"Train\")\n",
    "            if y_test is not None:\n",
    "                plt.plot(X, y_test[idx, i], \"-k\", label=\"True\")\n",
    "            plt.plot(X, best_y[idx, i], \"--r\", label=\"Prediction\")\n",
    "            if best_ystd is not None:\n",
    "                plt.plot(\n",
    "                    X, best_y[idx, i] + 2 * best_ystd[idx, i], \"-b\", label=\"95% CI\"\n",
    "                )\n",
    "                plt.plot(X, best_y[idx, i] - 2 * best_ystd[idx, i], \"-b\")\n",
    "        plt.xlabel(\"x\")\n",
    "        plt.ylabel(\"y\")\n",
    "        plt.legend()\n",
    "    # 2D\n",
    "    elif train_state.X_test.shape[1] == 2:\n",
    "        for i in range(y_dim):\n",
    "            plt.figure(figsize=(20, 12))\n",
    "            ax = plt.axes(projection=Axes3D.name)\n",
    "            ax.plot3D(\n",
    "                train_state.X_test[:, 0],\n",
    "                train_state.X_test[:, 1],\n",
    "                best_y[:, i],\n",
    "                \".\",\n",
    "            )\n",
    "            ax.set_xlabel(\"$x_1$\")\n",
    "            ax.set_ylabel(\"$x_2$\")\n",
    "            ax.set_zlabel(\"$y_{}$\".format(i + 1))\n",
    "\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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zzzzDK+88goA8fHxtGzZkkaNGtG9e3f2799/8jWfeOIJWrRoQd26dZkzZ06u9FuD2YuISL5IS0nhke7dmfnTT9w+diyXOtpzIRlCy5en5po1fNq8OfcPHcqXkZF06tQp5y/Uvv0/226+Ge67D5KToUuXf87v2zfjsWcP3HTT3+f9/HO23zo1NZXvv/+ezp07A7B48WJWr15NzZo1iYmJoVSpUixZsoRjx47RunVrrrrqKpYvX8769etZtWoVO3fupEGDBtx5yqHk3bt3069fP2bPnk3NmjXZt28fZcuWpX///hQvXpxHH30UgJkzZ55c5/bbb+fNN9+kXbt2DBkyhGHDhjFixIiTORcvXszUqVMZNmwYM2bMyHYfT0d74EREJM/Z9HTmN27Mc99/z5ihQ50ddpK/K1m9OteuWUPN+vXp060bq8ePdx0pW/766y8aN25MZGQkYWFh3HXXXQC0aNGCmjVrAvDjjz8ybtw4GjduzKWXXsrevXvZuHEjs2fPplevXgQFBVG1alWuuOKKf7z+woULadu27cnXKlu27BnzHDx4kAMHDtCuXTsA+vTpw+zZs0/Ov+GGGwBo1qwZCQkJ591/0B44ERHJB7Pbt6fd2rXMuuwy7tFhU59StmxZpk2bxppatajUuzdbq1QhLKu9aqdzpj1moaFnnl++fI72uJ1w4hy4UxUrVuzkc2stb775JldfffXflpk6dSrGmDO+vrX2rMvkRJEiRYCMiy9SU1Nz5TW1B05ERPLUnB49aDdnDrPr1qX93Lmu40gWKleuTM2JEwkG0q66in0bN7qOdN6uvvpqRo8ezfHjxwHYsGEDR44coW3btnz22WekpaWxfft2Zs2a9Y91L7vsMn755Rd+++03APbt2wdAiRIlOHz48D+WL1WqFGXKlDl5ftvHH398cm9cXtEeOBERyTPzn3+e1hMnsrByZVqtWKHhsXxYrS5dWPnWW9QdMIANzZpRNCGBomc5dOjL7r77bhISEmjatCnWWipUqMCkSZPo3r07P/30ExdffDF169bNstCqUKECMTEx3HDDDaSnp1OxYkWmT5/Otddey0033cTkyZN58803/7bO2LFj6d+/P8nJydSqVYsP83hEEWOtzdM38CWRkZH2xNUlIiKSt+Lj47mydWuGly7NrStXElqunOtIkg0LHnmES19/nR9r1+aqDRvw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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_best_state(train_state)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dde.saveplot(losshistory, train_state, issave=True, isplot=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py3.8",
   "language": "python",
   "name": "py3.8"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
